home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2001 February / maximum-cd-2001-02.iso / Team Arena / TeamArenaDemo.exe / Main / pak0.pk3 / botfiles / fw_items.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-22  |  26.6 KB  |  1,143 lines

  1. //===========================================================================
  2. //
  3. // Name:            fw_items.c
  4. // Function:        file to start with for fuzzy logic interbreeding sessions
  5. // Programmer:        Mr Elusive
  6. // Tab Size:        4 (real tabs)
  7. // Notes:            -
  8. //===========================================================================
  9.  
  10.  
  11. //#define WEAPONS_STAY
  12.  
  13. //balance range
  14. #define BR_ARMOR                30
  15. #define BR_HEALTH                30
  16. #define BR_WEAPON                30
  17. #define BR_AMMO                    30
  18. #define BR_POWERUP                30
  19.  
  20. //balance macros
  21. #define MZ(value)                (value) < 0 ? 0 : (value)
  22. #define ARMOR_SCALE(v)            balance($evalfloat(MZ(FS_ARMOR*v)), $evalfloat(MZ(FS_ARMOR*v-BR_ARMOR)), $evalfloat(MZ(FS_ARMOR*v+BR_ARMOR)))
  23. #define HEALTH_SCALE(v)            balance($evalfloat(MZ(FS_HEALTH*v)), $evalfloat(MZ(FS_HEALTH*v-BR_HEALTH)), $evalfloat(MZ(FS_HEALTH*v+BR_HEALTH)))
  24. #define WEAPON_SCALE(v)            balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_WEAPON)), $evalfloat(MZ(v+BR_WEAPON)))
  25. #define AMMO_SCALE(v)            balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_AMMO)), $evalfloat(MZ(v+BR_AMMO)))
  26. #define POWERUP_SCALE(v)        balance($evalfloat(MZ(v)), $evalfloat(MZ(v-BR_POWERUP)), $evalfloat(MZ(v+BR_POWERUP)))
  27.  
  28. #ifndef W_NAILGUN
  29. #define W_NAILGUN            40
  30. #define GWW_NAILGUN            40
  31. #endif
  32. #ifndef W_PROXLAUNCHER
  33. #define W_PROXLAUNCHER        40
  34. #define GWW_PROXLAUNCHER    40
  35. #endif
  36. #ifndef W_CHAINGUN
  37. #define W_CHAINGUN            40
  38. #define GWW_CHAINGUN        40
  39. #endif
  40. #ifndef W_KAMIKAZE
  41. #define W_KAMIKAZE            200
  42. #endif
  43. #ifndef W_INVULNERABILITY
  44. #define W_INVULNERABILITY    100
  45. #endif
  46. #ifndef W_PORTAL
  47. #define W_PORTAL            40
  48. #endif
  49. #ifndef W_SCOUT
  50. #define W_SCOUT                40
  51. #endif
  52. #ifndef W_GUARD
  53. #define W_GUARD                40
  54. #endif
  55. #ifndef W_DOUBLER
  56. #define W_DOUBLER            40
  57. #endif
  58. #ifndef W_AMMOREGEN
  59. #define W_AMMOREGEN            40
  60. #endif
  61. #ifndef W_REDCUBE
  62. #define W_REDCUBE            100
  63. #endif
  64. #ifndef W_BLUECUBE
  65. #define W_BLUECUBE            100
  66. #endif
  67.  
  68. //=============================================
  69. // ARMOR
  70. //=============================================
  71.  
  72. weight "item_armor_shard"
  73. {
  74.     switch(INVENTORY_SCOUT)
  75.     {
  76.         case 1:
  77.         {
  78.             switch(INVENTORY_ARMOR)
  79.             {
  80.                 case 10: return ARMOR_SCALE(20);
  81.                 case 20: return ARMOR_SCALE(20);
  82.                 case 30: return ARMOR_SCALE(20);
  83.                 case 40: return ARMOR_SCALE(20);
  84.                 case 50: return ARMOR_SCALE(20);
  85.                 case 60: return ARMOR_SCALE(15);
  86.                 case 70: return ARMOR_SCALE(15);
  87.                 case 80: return ARMOR_SCALE(15);
  88.                 case 90: return ARMOR_SCALE(15);
  89.                 case 100: return ARMOR_SCALE(15);
  90.                 case 110: return ARMOR_SCALE(10);
  91.                 case 120: return ARMOR_SCALE(10);
  92.                 case 130: return ARMOR_SCALE(10);
  93.                 case 140: return ARMOR_SCALE(10);
  94.                 case 150: return ARMOR_SCALE(10);
  95.                 case 160: return ARMOR_SCALE(10);
  96.                 case 170: return ARMOR_SCALE(10);
  97.                 case 180: return ARMOR_SCALE(10);
  98.                 case 190: return ARMOR_SCALE(10);
  99.                 case 200: return ARMOR_SCALE(10);
  100.                 default: return ARMOR_SCALE(1);
  101.             } //end switch
  102.         } //end case
  103.         default: return 0;
  104.     } //end switch
  105. } //end weight
  106.  
  107. weight "item_armor_combat"
  108. {
  109.     switch(INVENTORY_SCOUT)
  110.     {
  111.         case 1:
  112.         {
  113.             switch(INVENTORY_ARMOR)
  114.             {
  115.                 case 10: return ARMOR_SCALE(60);
  116.                 case 20: return ARMOR_SCALE(60);
  117.                 case 30: return ARMOR_SCALE(60);
  118.                 case 40: return ARMOR_SCALE(60);
  119.                 case 50: return ARMOR_SCALE(60);
  120.                 case 60: return ARMOR_SCALE(50);
  121.                 case 70: return ARMOR_SCALE(50);
  122.                 case 80: return ARMOR_SCALE(50);
  123.                 case 90: return ARMOR_SCALE(50);
  124.                 case 100: return ARMOR_SCALE(50);
  125.                 case 110: return ARMOR_SCALE(40);
  126.                 case 120: return ARMOR_SCALE(40);
  127.                 case 130: return ARMOR_SCALE(40);
  128.                 case 140: return ARMOR_SCALE(40);
  129.                 case 150: return ARMOR_SCALE(40);
  130.                 case 160: return ARMOR_SCALE(40);
  131.                 case 170: return ARMOR_SCALE(40);
  132.                 case 180: return ARMOR_SCALE(40);
  133.                 case 190: return ARMOR_SCALE(40);
  134.                 case 200: return ARMOR_SCALE(40);
  135.                 default: return ARMOR_SCALE(1);
  136.             } //end switch
  137.         } //end case
  138.         default: return 0;
  139.     } //end switch
  140. } //end weight
  141.  
  142. weight "item_armor_body"
  143. {
  144.     switch(INVENTORY_SCOUT)
  145.     {
  146.         case 1:
  147.         {
  148.             switch(INVENTORY_ARMOR)
  149.             {
  150.                 case 10: return ARMOR_SCALE(90);
  151.                 case 20: return ARMOR_SCALE(90);
  152.                 case 30: return ARMOR_SCALE(90);
  153.                 case 40: return ARMOR_SCALE(90);
  154.                 case 50: return ARMOR_SCALE(90);
  155.                 case 60: return ARMOR_SCALE(50);
  156.                 case 70: return ARMOR_SCALE(50);
  157.                 case 80: return ARMOR_SCALE(50);
  158.                 case 90: return ARMOR_SCALE(50);
  159.                 case 100: return ARMOR_SCALE(50);
  160.                 case 110: return ARMOR_SCALE(20);
  161.                 case 120: return ARMOR_SCALE(20);
  162.                 case 130: return ARMOR_SCALE(20);
  163.                 case 140: return ARMOR_SCALE(20);
  164.                 case 150: return ARMOR_SCALE(20);
  165.                 case 160: return ARMOR_SCALE(20);
  166.                 case 170: return ARMOR_SCALE(20);
  167.                 case 180: return ARMOR_SCALE(20);
  168.                 case 190: return ARMOR_SCALE(20);
  169.                 case 200: return ARMOR_SCALE(20);
  170.                 default: return ARMOR_SCALE(1);
  171.             } //end switch
  172.         } //end case
  173.         default: return 0;
  174.     } //end switch
  175. } //end weight
  176.  
  177. //=============================================
  178. // HEALTH
  179. //=============================================
  180.  
  181. weight "item_health_small"
  182. {
  183.     switch(INVENTORY_HEALTH)
  184.     {
  185.         case 10: return HEALTH_SCALE(80);
  186.         case 20: return HEALTH_SCALE(80);
  187.         case 30: return HEALTH_SCALE(80);
  188.         case 40: return HEALTH_SCALE(80);
  189.         case 50: return HEALTH_SCALE(70);
  190.         case 60: return HEALTH_SCALE(70);
  191.         case 70: return HEALTH_SCALE(60);
  192.         case 80: return HEALTH_SCALE(60);
  193.         case 90: return HEALTH_SCALE(50);
  194.         case 100: return HEALTH_SCALE(50);
  195.         default: return 0;
  196.     } //end switch
  197. } //end weight
  198.  
  199. weight "item_health"
  200. {
  201.     switch(INVENTORY_HEALTH)
  202.     {
  203.         case 10: return HEALTH_SCALE(90);
  204.         case 20: return HEALTH_SCALE(90);
  205.         case 30: return HEALTH_SCALE(90);
  206.         case 40: return HEALTH_SCALE(90);
  207.         case 50: return HEALTH_SCALE(80);
  208.         case 60: return HEALTH_SCALE(80);
  209.         case 70: return HEALTH_SCALE(60);
  210.         case 80: return HEALTH_SCALE(60);
  211.         case 90: return HEALTH_SCALE(50);
  212.         case 100: return HEALTH_SCALE(50);
  213.         default: return 0;
  214.     } //end switch
  215. } //end weight
  216.  
  217. weight "item_health_large"
  218. {
  219.     switch(INVENTORY_HEALTH)
  220.     {
  221.         case 10: return HEALTH_SCALE(100);
  222.         case 20: return HEALTH_SCALE(100);
  223.         case 30: return HEALTH_SCALE(100);
  224.         case 40: return HEALTH_SCALE(100);
  225.         case 50: return HEALTH_SCALE(90);
  226.         case 60: return HEALTH_SCALE(90);
  227.         case 70: return HEALTH_SCALE(80);
  228.         case 80: return HEALTH_SCALE(80);
  229.         case 90: return HEALTH_SCALE(50);
  230.         case 100: return HEALTH_SCALE(50);
  231.         default: return 0;
  232.     } //end switch
  233. } //end weight
  234.  
  235. weight "item_health_mega"
  236. {
  237.     switch(INVENTORY_HEALTH)
  238.     {
  239.         case 10: return HEALTH_SCALE(110);
  240.         case 20: return HEALTH_SCALE(110);
  241.         case 30: return HEALTH_SCALE(110);
  242.         case 40: return HEALTH_SCALE(110);
  243.         case 50: return HEALTH_SCALE(100);
  244.         case 60: return HEALTH_SCALE(100);
  245.         case 70: return HEALTH_SCALE(90);
  246.         case 80: return HEALTH_SCALE(90);
  247.         case 90: return HEALTH_SCALE(80);
  248.         case 100: return HEALTH_SCALE(80);
  249.         default: return HEALTH_SCALE(50);
  250.     } //end switch
  251. } //end weight
  252.  
  253. //=============================================
  254. // WEAPONS
  255. //=============================================
  256.  
  257. weight "weapon_shotgun"
  258. {
  259.     switch(INVENTORY_SHOTGUN)
  260.     {
  261.         case 1:
  262.         {
  263.             switch(INVENTORY_SHELLS)
  264.             {
  265.                 case 10: return WEAPON_SCALE(W_SHOTGUN - 10);
  266.                 default: return WEAPON_SCALE(W_SHOTGUN);
  267.             } //end switch
  268.         } //end case
  269.         default:
  270.         {
  271. #ifdef WEAPONS_STAY
  272.             switch(INVENTORY_SHELLS)
  273.             {
  274.                 case 10: return WEAPON_SCALE(GWW_SHOTGUN);
  275.                 case 100: return WEAPON_SCALE(GWW_SHOTGUN - 10);
  276.                 default: return balance(5, 3, 7);
  277.             } //end switch
  278. #else
  279.             return 1;
  280. #endif            
  281.         } //end default
  282.     } //end switch
  283. } //end weight
  284.  
  285. weight "weapon_machinegun"
  286. {
  287.     switch(INVENTORY_MACHINEGUN)
  288.     {
  289.         case 1:
  290.         {
  291.             switch(INVENTORY_BULLETS)
  292.             {
  293.                 case 40: return WEAPON_SCALE(W_MACHINEGUN - 10);
  294.                 default: return WEAPON_SCALE(W_MACHINEGUN);
  295.             } //end switch
  296.         } //end case
  297.         default:
  298.         {
  299. #ifdef WEAPONS_STAY
  300.             switch(INVENTORY_BULLETS)
  301.             {
  302.                 case 50: return WEAPON_SCALE(GWW_MACHINEGUN);
  303.                 case 200: return WEAPON_SCALE(GWW_MACHINEGUN - 10);
  304.                 default: return balance(5, 3, 7);
  305.             } //end switch
  306. #else
  307.             return 1;
  308. #endif            
  309.         } //end default
  310.     } //switch
  311. } //end weight
  312.  
  313. weight "weapon_grenadelauncher"
  314. {
  315.     switch(INVENTORY_GRENADELAUNCHER)
  316.     {
  317.         case 1: return WEAPON_SCALE(W_GRENADELAUNCHER);
  318.         default:
  319.         {
  320. #ifdef WEAPONS_STAY
  321.             switch(INVENTORY_GRENADES)
  322.             {
  323.                 case 16: return WEAPON_SCALE(GWW_GRENADELAUNCHER);
  324.                 case 50: return WEAPON_SCALE(GWW_GRENADELAUNCHER - 10);
  325.                 default: return balance(5, 3, 7);
  326.             } //end switch
  327. #else
  328.             return 1;
  329. #endif            
  330.         } //end default
  331.     } //end switch
  332. } //end weight
  333.  
  334. weight "weapon_rocketlauncher"
  335. {
  336.     switch(INVENTORY_ROCKETLAUNCHER)
  337.     {
  338.         case 1: return WEAPON_SCALE(W_ROCKETLAUNCHER);
  339.         default:
  340.         {
  341. #ifdef WEAPONS_STAY
  342.             switch(INVENTORY_ROCKETS)
  343.             {
  344.                 case 16: return WEAPON_SCALE(GWW_ROCKETLAUNCHER);
  345.                 case 50: return WEAPON_SCALE(GWW_ROCKETLAUNCHER - 10);
  346.                 default: return balance(5, 3, 7);
  347.             } //end switch
  348. #else
  349.             return 1;
  350. #endif            
  351.         } //end default
  352.     } //end switch
  353. } //end weight
  354.  
  355. weight "weapon_lightning"
  356. {
  357.     switch(INVENTORY_LIGHTNING)
  358.     {
  359.         case 1: return WEAPON_SCALE(W_LIGHTNING);
  360.         default:
  361.         {
  362. #ifdef WEAPONS_STAY
  363.             switch(INVENTORY_LIGHTNINGAMMO)
  364.             {
  365.                 case 16: return WEAPON_SCALE(GWW_LIGHTNING);
  366.                 case 50: return WEAPON_SCALE(GWW_LIGHTNING - 10);
  367.                 default: return balance(5, 3, 7);
  368.             } //end switch
  369. #else
  370.             return 1;
  371. #endif            
  372.         } //end default
  373.     } //end switch
  374. } //end weight
  375.  
  376. weight "weapon_railgun"
  377. {
  378.     switch(INVENTORY_RAILGUN)
  379.     {
  380.         case 1: return WEAPON_SCALE(W_RAILGUN);
  381.         default:
  382.         {
  383. #ifdef WEAPONS_STAY
  384.             switch(INVENTORY_SLUGS)
  385.             {
  386.                 case 16: return WEAPON_SCALE(GWW_RAILGUN);
  387.                 case 50: return WEAPON_SCALE(GWW_RAILGUN - 10);
  388.                 default: return balance(5, 3, 7);
  389.             } //end switch
  390. #else
  391.             return 1;
  392. #endif            
  393.         } //end default
  394.     } //end switch
  395. } //end weight
  396.  
  397. weight "weapon_plasmagun"
  398. {
  399.     switch(INVENTORY_PLASMAGUN)
  400.     {
  401.         case 1: return WEAPON_SCALE(W_PLASMAGUN);
  402.         default:
  403.         {
  404. #ifdef WEAPONS_STAY
  405.             switch(INVENTORY_CELLS)
  406.             {
  407.                 case 16: return WEAPON_SCALE(GWW_PLASMAGUN);
  408.                 case 50: return WEAPON_SCALE(GWW_PLASMAGUN - 10);
  409.                 default: return balance(5, 3, 7);
  410.             } //end switch
  411. #else
  412.             return 1;
  413. #endif            
  414.         } //end default
  415.     } //end switch
  416. } //end weight
  417.  
  418. weight "weapon_bfg"
  419. {
  420.     switch(INVENTORY_BFG10K)
  421.     {
  422.         case 1: return WEAPON_SCALE(W_BFG10K);
  423.         default:
  424.         {
  425. #ifdef WEAPONS_STAY
  426.             switch(INVENTORY_BFGAMMO)
  427.             {
  428.                 case 16: return WEAPON_SCALE(GWW_BFG10K);
  429.                 case 200: return WEAPON_SCALE(GWW_BFG10K - 10);
  430.                 default: return balance(5, 3, 7);
  431.             } //end switch
  432. #else
  433.             return 1;
  434. #endif            
  435.         } //end default
  436.     } //end switch
  437. } //end weight
  438.  
  439. weight "weapon_nailgun"
  440. {
  441.     switch(INVENTORY_NAILGUN)
  442.     {
  443.         case 1: return WEAPON_SCALE(W_NAILGUN);
  444.         default:
  445.         {
  446. #ifdef WEAPONS_STAY
  447.             switch(INVENTORY_NAILS)
  448.             {
  449.                 case 16: return WEAPON_SCALE(GWW_NAILGUN);
  450.                 case 200: return WEAPON_SCALE(GWW_NAILGUN - 10);
  451.                 default: return balance(5, 3, 7);
  452.             } //end switch
  453. #else
  454.             return 1;
  455. #endif            
  456.         } //end default
  457.     } //end switch
  458. } //end weight
  459.  
  460. weight "weapon_prox_launcher"
  461. {
  462.     switch(INVENTORY_PROXLAUNCHER)
  463.     {
  464.     case 1: return WEAPON_SCALE(W_PROXLAUNCHER);
  465.         default:
  466.         {
  467. #ifdef WEAPONS_STAY
  468.             switch(INVENTORY_MINES)
  469.             {
  470.                 case 16: return WEAPON_SCALE(GWW_PROXLAUNCHER);
  471.                 case 200: return WEAPON_SCALE(GWW_PROXLAUNCHER - 10);
  472.                 default: return balance(5, 3, 7);
  473.             } //end switch
  474. #else
  475.             return 1;
  476. #endif            
  477.         } //end default
  478.     } //end switch
  479. } //end weight
  480.  
  481. weight "weapon_chaingun"
  482. {
  483.     switch(INVENTORY_CHAINGUN)
  484.     {
  485.         case 1: return WEAPON_SCALE(W_CHAINGUN);
  486.         default:
  487.         {
  488. #ifdef WEAPONS_STAY
  489.             switch(INVENTORY_BELT)
  490.             {
  491.                 case 16: return WEAPON_SCALE(GWW_CHAINGUN);
  492.                 case 200: return WEAPON_SCALE(GWW_CHAINGUN - 10);
  493.                 default: return balance(5, 3, 7);
  494.             } //end switch
  495. #else
  496.             return 1;
  497. #endif            
  498.         } //end default
  499.     } //end switch
  500. } //end weight
  501.  
  502. //=============================================
  503. // AMMO
  504. //=============================================
  505.  
  506. weight "ammo_shells"
  507. {
  508.     switch(INVENTORY_SHELLS)
  509.     {
  510.         case 20: return AMMO_SCALE(20);
  511.         case 40: return AMMO_SCALE(20);
  512.         case 60: return AMMO_SCALE(20);
  513.         case 80: return AMMO_SCALE(20);
  514.         case 100: return AMMO_SCALE(20);
  515.         case 120: return AMMO_SCALE(20);
  516.         case 140: return AMMO_SCALE(20);
  517.         case 160: return AMMO_SCALE(20);
  518.         case 180: return AMMO_SCALE(20);
  519.         case 200: return AMMO_SCALE(20);
  520.         default: return 0;
  521.     } //end switch
  522. } //end weight
  523.  
  524. weight "ammo_bullets"
  525. {
  526.     switch(INVENTORY_BULLETS)
  527.     {
  528.         case 20: return AMMO_SCALE(20);
  529.         case 40: return AMMO_SCALE(20);
  530.         case 60: return AMMO_SCALE(20);
  531.         case 80: return AMMO_SCALE(20);
  532.         case 100: return AMMO_SCALE(20);
  533.         case 120: return AMMO_SCALE(20);
  534.         case 140: return AMMO_SCALE(20);
  535.         case 160: return AMMO_SCALE(20);
  536.         case 180: return AMMO_SCALE(20);
  537.         case 200: return AMMO_SCALE(20);
  538.         default: return 0;
  539.     } //end switch
  540. } //end weight
  541.  
  542. weight "ammo_grenades"
  543. {
  544.     switch(INVENTORY_GRENADES)
  545.     {
  546.         case 20: return AMMO_SCALE(20);
  547.         case 40: return AMMO_SCALE(20);
  548.         case 60: return AMMO_SCALE(20);
  549.         case 80: return AMMO_SCALE(20);
  550.         case 100: return AMMO_SCALE(20);
  551.         case 120: return AMMO_SCALE(20);
  552.         case 140: return AMMO_SCALE(20);
  553.         case 160: return AMMO_SCALE(20);
  554.         case 180: return AMMO_SCALE(20);
  555.         case 200: return AMMO_SCALE(20);
  556.         default: return 0;
  557.     } //end switch
  558. } //end weight
  559.  
  560. weight "ammo_cells"
  561. {
  562.     switch(INVENTORY_CELLS)
  563.     {
  564.         case 20: return AMMO_SCALE(20);
  565.         case 40: return AMMO_SCALE(20);
  566.         case 60: return AMMO_SCALE(20);
  567.         case 80: return AMMO_SCALE(20);
  568.         case 100: return AMMO_SCALE(20);
  569.         case 120: return AMMO_SCALE(20);
  570.         case 140: return AMMO_SCALE(20);
  571.         case 160: return AMMO_SCALE(20);
  572.         case 180: return AMMO_SCALE(20);
  573.         case 200: return AMMO_SCALE(20);
  574.         default: return 0;
  575.     } //end switch
  576. } //end weight
  577.  
  578. weight "ammo_lightning"
  579. {
  580.     switch(INVENTORY_LIGHTNINGAMMO)
  581.     {
  582.         case 20: return AMMO_SCALE(20);
  583.         case 40: return AMMO_SCALE(20);
  584.         case 60: return AMMO_SCALE(20);
  585.         case 80: return AMMO_SCALE(20);
  586.         case 100: return AMMO_SCALE(20);
  587.         case 120: return AMMO_SCALE(20);
  588.         case 140: return AMMO_SCALE(20);
  589.         case 160: return AMMO_SCALE(20);
  590.         case 180: return AMMO_SCALE(20);
  591.         case 200: return AMMO_SCALE(20);
  592.         default: return 0;
  593.     } //end switch
  594. } //end weight
  595.  
  596. weight "ammo_rockets"
  597. {
  598.     switch(INVENTORY_ROCKETS)
  599.     {
  600.         case 20: return AMMO_SCALE(20);
  601.         case 40: return AMMO_SCALE(20);
  602.         case 60: return AMMO_SCALE(20);
  603.         case 80: return AMMO_SCALE(20);
  604.         case 100: return AMMO_SCALE(20);
  605.         case 120: return AMMO_SCALE(20);
  606.         case 140: return AMMO_SCALE(20);
  607.         case 160: return AMMO_SCALE(20);
  608.         case 180: return AMMO_SCALE(20);
  609.         case 200: return AMMO_SCALE(20);
  610.         default: return 0;
  611.     } //end switch
  612. } //end weight
  613.  
  614. weight "ammo_slugs"
  615. {
  616.     switch(INVENTORY_SLUGS)
  617.     {
  618.         case 20: return AMMO_SCALE(20);
  619.         case 40: return AMMO_SCALE(20);
  620.         case 60: return AMMO_SCALE(20);
  621.         case 80: return AMMO_SCALE(20);
  622.         case 100: return AMMO_SCALE(20);
  623.         case 120: return AMMO_SCALE(20);
  624.         case 140: return AMMO_SCALE(20);
  625.         case 160: return AMMO_SCALE(20);
  626.         case 180: return AMMO_SCALE(20);
  627.         case 200: return AMMO_SCALE(20);
  628.         default: return 0;
  629.     } //end switch
  630. } //end weight
  631.  
  632. weight "ammo_bfg"
  633. {
  634.     switch(INVENTORY_BFGAMMO)
  635.     {
  636.         case 20: return AMMO_SCALE(20);
  637.         case 40: return AMMO_SCALE(20);
  638.         case 60: return AMMO_SCALE(20);
  639.         case 80: return AMMO_SCALE(20);
  640.         case 100: return AMMO_SCALE(20);
  641.         case 120: return AMMO_SCALE(20);
  642.         case 140: return AMMO_SCALE(20);
  643.         case 160: return AMMO_SCALE(20);
  644.         case 180: return AMMO_SCALE(20);
  645.         case 200: return AMMO_SCALE(20);
  646.         default: return 0;
  647.     } //end switch
  648. } //end weight
  649.  
  650. weight "ammo_nails"
  651. {
  652.     switch(INVENTORY_NAILS)
  653.     {
  654.         case 20: return AMMO_SCALE(20);
  655.         case 40: return AMMO_SCALE(20);
  656.         case 60: return AMMO_SCALE(20);
  657.         case 80: return AMMO_SCALE(20);
  658.         case 100: return AMMO_SCALE(20);
  659.         case 120: return AMMO_SCALE(20);
  660.         case 140: return AMMO_SCALE(20);
  661.         case 160: return AMMO_SCALE(20);
  662.         case 180: return AMMO_SCALE(20);
  663.         case 200: return AMMO_SCALE(20);
  664.         default: return 0;
  665.     } //end switch
  666. } //end weight
  667.  
  668. weight "ammo_nails"
  669. {
  670.     switch(INVENTORY_NAILS)
  671.     {
  672.         case 20: return AMMO_SCALE(20);
  673.         case 40: return AMMO_SCALE(20);
  674.         case 60: return AMMO_SCALE(20);
  675.         case 80: return AMMO_SCALE(20);
  676.         case 100: return AMMO_SCALE(20);
  677.         case 120: return AMMO_SCALE(20);
  678.         case 140: return AMMO_SCALE(20);
  679.         case 160: return AMMO_SCALE(20);
  680.         case 180: return AMMO_SCALE(20);
  681.         case 200: return AMMO_SCALE(20);
  682.         default: return 0;
  683.     } //end switch
  684. } //end weight
  685.  
  686. weight "ammo_mines"
  687. {
  688.     switch(INVENTORY_MINES)
  689.     {
  690.         case 20: return AMMO_SCALE(20);
  691.         case 40: return AMMO_SCALE(20);
  692.         case 60: return AMMO_SCALE(20);
  693.         case 80: return AMMO_SCALE(20);
  694.         case 100: return AMMO_SCALE(20);
  695.         case 120: return AMMO_SCALE(20);
  696.         case 140: return AMMO_SCALE(20);
  697.         case 160: return AMMO_SCALE(20);
  698.         case 180: return AMMO_SCALE(20);
  699.         case 200: return AMMO_SCALE(20);
  700.         default: return 0;
  701.     } //end switch
  702. } //end weight
  703.  
  704. weight "ammo_belt"
  705. {
  706.     switch(INVENTORY_BELT)
  707.     {
  708.         case 20: return AMMO_SCALE(20);
  709.         case 40: return AMMO_SCALE(20);
  710.         case 60: return AMMO_SCALE(20);
  711.         case 80: return AMMO_SCALE(20);
  712.         case 100: return AMMO_SCALE(20);
  713.         case 120: return AMMO_SCALE(20);
  714.         case 140: return AMMO_SCALE(20);
  715.         case 160: return AMMO_SCALE(20);
  716.         case 180: return AMMO_SCALE(20);
  717.         case 200: return AMMO_SCALE(20);
  718.         default: return 0;
  719.     } //end switch
  720. } //end weight
  721.  
  722.  
  723. //=============================================
  724. // POWERUPS
  725. //=============================================
  726.  
  727. weight "holdable_teleporter"
  728. {
  729.     switch(INVENTORY_TELEPORTER)
  730.     {
  731.         case 1:
  732.         {
  733.             switch(INVENTORY_MEDKIT)
  734.             {
  735.                 case 1:
  736.                 {
  737.                     switch(INVENTORY_PORTAL)
  738.                     {
  739.                         case 1:
  740.                         {
  741.                             switch(INVENTORY_KAMIKAZE)
  742.                             {
  743.                                 case 1:
  744.                                 {
  745.                                     switch(INVENTORY_INVULNERABILITY)
  746.                                     {
  747.                                         case 1: return POWERUP_SCALE(W_TELEPORTER);
  748.                                         default: return 0; //already has a medkit
  749.                                     } //end switch
  750.                                 } //end case
  751.                                 default: return 0; //already has a holdable
  752.                             } //end switch
  753.                         } //end case
  754.                         default: return 0; //already has a holdable
  755.                     } //end switch
  756.                 } //end case
  757.                 default: return 0; //already has a holdable
  758.             } //end switch
  759.         } //end case
  760.         default: return 0; //already has a holdable
  761.     } //end switch
  762. } //end weight
  763.  
  764. weight "holdable_medkit"
  765. {
  766.     switch(INVENTORY_TELEPORTER)
  767.     {
  768.         case 1:
  769.         {
  770.             switch(INVENTORY_MEDKIT)
  771.             {
  772.                 case 1:
  773.                 {
  774.                     switch(INVENTORY_PORTAL)
  775.                     {
  776.                         case 1:
  777.                         {
  778.                             switch(INVENTORY_KAMIKAZE)
  779.                             {
  780.                                 case 1:
  781.                                 {
  782.                                     switch(INVENTORY_INVULNERABILITY)
  783.                                     {
  784.                                         case 1: return POWERUP_SCALE(W_MEDKIT);
  785.                                         default: return 0; //already has a holdable
  786.                                     } //end switch
  787.                                 } //end case
  788.                                 default: return 0; //already has a holdable
  789.                             } //end switch
  790.                         } //end case
  791.                         default: return 0; //already has a holdable
  792.                     } //end switch
  793.                 } //end case
  794.                 default: return 0; //already has a holdable
  795.             } //end switch
  796.         } //end case
  797.         default: return 0; //already has a holdable
  798.     } //end switch
  799. } //end weight
  800.  
  801. weight "holdable_kamikaze"
  802. {
  803.     switch(INVENTORY_TELEPORTER)
  804.     {
  805.         case 1:
  806.         {
  807.             switch(INVENTORY_MEDKIT)
  808.             {
  809.                 case 1:
  810.                 {
  811.                     switch(INVENTORY_PORTAL)
  812.                     {
  813.                         case 1:
  814.                         {
  815.                             switch(INVENTORY_KAMIKAZE)
  816.                             {
  817.                                 case 1:
  818.                                 {
  819.                                     switch(INVENTORY_INVULNERABILITY)
  820.                                     {
  821.                                         case 1: return POWERUP_SCALE(W_KAMIKAZE);
  822.                                         default: return 0; //already has a holdable
  823.                                     } //end switch
  824.                                 } //end case
  825.                                 default: return 0; //already has a holdable
  826.                             } //end switch
  827.                         } //end case
  828.                         default: return 0; //already has a holdable
  829.                     } //end switch
  830.                 } //end case
  831.                 default: return 0; //already has a holdable
  832.             } //end switch
  833.         } //end case
  834.         default: return 0; //already has a holdable
  835.     } //end switch
  836. } //end weight
  837.  
  838. weight "holdable_portal"
  839. {
  840.     switch(INVENTORY_TELEPORTER)
  841.     {
  842.         case 1:
  843.         {
  844.             switch(INVENTORY_MEDKIT)
  845.             {
  846.                 case 1:
  847.                 {
  848.                     switch(INVENTORY_PORTAL)
  849.                     {
  850.                         case 1:
  851.                         {
  852.                             switch(INVENTORY_KAMIKAZE)
  853.                             {
  854.                                 case 1:
  855.                                 {
  856.                                     switch(INVENTORY_INVULNERABILITY)
  857.                                     {
  858.                                         case 1: return POWERUP_SCALE(W_PORTAL);
  859.                                         default: return 0; //already has a holdable
  860.                                     } //end switch
  861.                                 } //end case
  862.                                 default: return 0; //already has a holdable
  863.                             } //end switch
  864.                         } //end case
  865.                         default: return 0; //already has a holdable
  866.                     } //end switch
  867.                 } //end case
  868.                 default: return 0; //already has a holdable
  869.             } //end switch
  870.         } //end case
  871.         default: return 0; //already has a holdable
  872.     } //end switch
  873. } //end weight
  874.  
  875. weight "holdable_invulnerability"
  876. {
  877.     switch(INVENTORY_TELEPORTER)
  878.     {
  879.         case 1:
  880.         {
  881.             switch(INVENTORY_MEDKIT)
  882.             {
  883.                 case 1:
  884.                 {
  885.                     switch(INVENTORY_PORTAL)
  886.                     {
  887.                         case 1:
  888.                         {
  889.                             switch(INVENTORY_KAMIKAZE)
  890.                             {
  891.                                 case 1:
  892.                                 {
  893.                                     switch(INVENTORY_INVULNERABILITY)
  894.                                     {
  895.                                         case 1: return POWERUP_SCALE(W_INVULNERABILITY);
  896.                                         default: return 0; //already has a hodable
  897.                                     } //end switch
  898.                                 } //end case
  899.                                 default: return 0; //already has a holdable
  900.                             } //end switch
  901.                         } //end case
  902.                         default: return 0; //already has a holdable
  903.                     } //end switch
  904.                 } //end case
  905.                 default: return 0; //already has a holdable
  906.             } //end switch
  907.         } //end case
  908.         default: return 0; //already has a holdable
  909.     } //end switch
  910. } //end weight
  911.  
  912. weight "item_quad"
  913. {
  914.     return POWERUP_SCALE(W_QUAD);
  915. } //end weight
  916.  
  917. weight "item_enviro"
  918. {
  919.     return POWERUP_SCALE(W_ENVIRO);
  920. } //end weight
  921.  
  922. weight "item_haste"
  923. {
  924.     return POWERUP_SCALE(W_HASTE);
  925. } //end weight
  926.  
  927. weight "item_invisibility"
  928. {
  929.     return POWERUP_SCALE(W_INVISIBILITY);
  930. } //end weight
  931.  
  932. weight "item_regen"
  933. {
  934.     return POWERUP_SCALE(W_REGEN);
  935. } //end weight
  936.  
  937. weight "item_flight"
  938. {
  939.     return 0;//POWERUP_SCALE(W_FLIGHT);
  940. } //end weight
  941.  
  942. weight "item_scout"
  943. {
  944.     switch(INVENTORY_SCOUT)
  945.     {
  946.         case 1:
  947.         {
  948.             switch(INVENTORY_GUARD)
  949.             {
  950.                 case 1:
  951.                 {
  952.                     switch(INVENTORY_DOUBLER)
  953.                     {
  954.                         case 1:
  955.                         {
  956.                             switch(INVENTORY_AMMOREGEN)
  957.                             {
  958.                                 case 1: return POWERUP_SCALE(W_SCOUT);
  959.                                 default: return 0; //already has a persistant powerup
  960.                             } //end switch
  961.                         } //end case
  962.                         default: return 0; //already has a persistant powerup
  963.                     } //end switch
  964.                 } //end case
  965.                 default: return 0; //already has a persistant powerup
  966.             } //end switch
  967.         } //end case
  968.         default: return 0; //already has a persistant powerup
  969.     } //end switch
  970. } //end weight
  971.  
  972. weight "item_guard"
  973. {
  974.     switch(INVENTORY_SCOUT)
  975.     {
  976.         case 1:
  977.         {
  978.             switch(INVENTORY_GUARD)
  979.             {
  980.                 case 1:
  981.                 {
  982.                     switch(INVENTORY_DOUBLER)
  983.                     {
  984.                         case 1:
  985.                         {
  986.                             switch(INVENTORY_AMMOREGEN)
  987.                             {
  988.                                 case 1: return POWERUP_SCALE(W_GUARD);
  989.                                 default: return 0; //already has a persistant powerup
  990.                             } //end switch
  991.                         } //end case
  992.                         default: return 0; //already has a persistant powerup
  993.                     } //end switch
  994.                 } //end case
  995.                 default: return 0; //already has a persistant powerup
  996.             } //end switch
  997.         } //end case
  998.         default: return 0; //already has a persistant powerup
  999.     } //end switch
  1000. } //end weight
  1001.  
  1002. weight "item_doubler"
  1003. {
  1004.     switch(INVENTORY_SCOUT)
  1005.     {
  1006.         case 1:
  1007.         {
  1008.             switch(INVENTORY_GUARD)
  1009.             {
  1010.                 case 1:
  1011.                 {
  1012.                     switch(INVENTORY_DOUBLER)
  1013.                     {
  1014.                         case 1:
  1015.                         {
  1016.                             switch(INVENTORY_AMMOREGEN)
  1017.                             {
  1018.                                 case 1: return POWERUP_SCALE(W_DOUBLER);
  1019.                                 default: return 0; //already has a persistant powerup
  1020.                             } //end switch
  1021.                         } //end case
  1022.                         default: return 0; //already has a persistant powerup
  1023.                     } //end switch
  1024.                 } //end case
  1025.                 default: return 0; //already has a persistant powerup
  1026.             } //end switch
  1027.         } //end case
  1028.         default: return 0; //already has a persistant powerup
  1029.     } //end switch
  1030. } //end weight
  1031.  
  1032. weight "item_ammoregen"
  1033. {
  1034.     switch(INVENTORY_SCOUT)
  1035.     {
  1036.         case 1:
  1037.         {
  1038.             switch(INVENTORY_GUARD)
  1039.             {
  1040.                 case 1:
  1041.                 {
  1042.                     switch(INVENTORY_DOUBLER)
  1043.                     {
  1044.                         case 1:
  1045.                         {
  1046.                             switch(INVENTORY_AMMOREGEN)
  1047.                             {
  1048.                                 case 1: return POWERUP_SCALE(W_AMMOREGEN);
  1049.                                 default: return 0; //already has a persistant powerup
  1050.                             } //end switch
  1051.                         } //end case
  1052.                         default: return 0; //already has a persistant powerup
  1053.                     } //end switch
  1054.                 } //end case
  1055.                 default: return 0; //already has a persistant powerup
  1056.             } //end switch
  1057.         } //end case
  1058.         default: return 0; //already has a persistant powerup
  1059.     } //end switch
  1060. } //end weight
  1061.  
  1062. //=============================================
  1063. // This is only used to pickup dropped CTF
  1064. // flags now. The logic in here makes no
  1065. // sense since the bot has specific CTF AI.
  1066. //=============================================
  1067.  
  1068. weight "team_CTF_redflag" //Red Flag
  1069. {
  1070.     switch(INVENTORY_REDFLAG)
  1071.     {
  1072.         case 1: //not carrying the red flag
  1073.         {
  1074.             switch(INVENTORY_BLUEFLAG)
  1075.             {
  1076.                 case 1: //not carrying the blue flag
  1077.                 {
  1078.                     return FLAG_WEIGHT;
  1079.                 } //end case
  1080.                 default: //bot carrying the blue flag so go back to the base
  1081.                 {
  1082.                     return 200;
  1083.                 } //end case
  1084.             } //end switch
  1085.         } //end case
  1086.         default: //bot carrying the red flag, so don't go back
  1087.         {
  1088.             return 0;
  1089.         } //end default
  1090.     } //end switch
  1091. } //end weight
  1092.  
  1093. weight "team_CTF_blueflag" //Blue Flag
  1094. {
  1095.     switch(INVENTORY_BLUEFLAG)
  1096.     {
  1097.         case 1: //not carrying the blue flag
  1098.         {
  1099.             switch(INVENTORY_REDFLAG)
  1100.             {
  1101.                 case 1: //not carrying the red flag
  1102.                 {
  1103.                     return FLAG_WEIGHT;
  1104.                 } //end case
  1105.                 default: //bot is carrying the red flag so go back to the base
  1106.                 {
  1107.                     return 200;
  1108.                 } //end case
  1109.             } //end switch
  1110.         } //end case
  1111.         default: //bot is carrying the blue flag, so don't go back
  1112.         {
  1113.             return 0;
  1114.         } //end default
  1115.     } //end switch
  1116. } //end weight
  1117.  
  1118. weight "team_CTF_neutralflag" //Neutral Flag
  1119. {
  1120.     return FLAG_WEIGHT;
  1121. } //end weight
  1122.  
  1123. weight "item_redcube" //Red Cube
  1124. {
  1125.     return W_REDCUBE;
  1126. } //end weight
  1127.  
  1128. weight "item_bluecube" //Blue Cube
  1129. {
  1130.     return W_BLUECUBE;
  1131. } //end weight
  1132.  
  1133. //=============================================
  1134. // bot roam goal
  1135. //=============================================
  1136.  
  1137. weight "item_botroam"
  1138. {
  1139.     return 1;
  1140. } //end weight
  1141.  
  1142.  
  1143.